CREATE TABLE [dbo].[tb_InscripcionesConvocatorias]
(
[idInscripcionConvocatoria] [int] NOT NULL IDENTITY(1, 1),
[Agente] [int] NOT NULL,
[Convocatoria] [int] NOT NULL,
[Fecha9] [datetime] NOT NULL CONSTRAINT [DF_tb_InscripcionesConvocatorias_Fecha9] DEFAULT (getdate()),
[CargoGenerico] [int] NULL,
[AsignaturaGenerica] [int] NULL,
[Localidad] [int] NULL,
[Organizacion] [int] NULL,
[Observaciones] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Estado] [int] NOT NULL,
[Puntaje] [float] NULL,
[FechaCalculo] [datetime] NULL CONSTRAINT [DF_tb_InscripcionesConvocatorias_FechaCalculo] DEFAULT (getdate()),
[NecesitaRecalcular] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_tb_InscripcionesConvocatorias_NecesitaRecalcular] DEFAULT ('S'),
[TituloValorado] [int] NULL,
[CategoriaDeTitulo] [int] NULL,
[PromedioTitulo] [float] NULL,
[TituloEspecifico] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[TituloRegistrado] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[TipoDeEspacioCurricular] [int] NULL,
[Nivel] [int] NOT NULL,
[Ciclo] [int] NULL CONSTRAINT [DF_tb_InscripcionesConvocatorias_Ciclo] DEFAULT ((1)),
[Modalidad] [int] NULL,
[Usuario9] [int] NULL CONSTRAINT [DF_tb_InscripcionesConvocatorias_Usuario9] DEFAULT ([dbo].[sp_usuario](isnull(suser_sname(),(34653720)))),
[SituacionRevista] [int] NULL,
[TituloConcurrente] [int] NULL,
[CategoriaTituloAdultos] [int] NULL,
[AreaJuntas] [int] NULL
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[ActualizaSituacionRevista] ON dbo.tb_InscripcionesConvocatorias 
FOR INSERT,UPDATE
AS
SET NOCOUNT ON
DECLARE @IdInscripcionConvocatoria INT
DECLARE @TipoConvocatoria int
DECLARE @SituacionRevista int
DECLARE @organizacion int
DECLARE @idInscripcionConvocatoriaAudit INT


SELECT @IdInscripcionConvocatoria = I.idinscripcionconvocatoria,@TipoConvocatoria=c.tipoconvocatoria,@SituacionRevista=i.situacionrevista, @organizacion=i.organizacion
FROM inserted I join tb_convocatorias c on i.convocatoria=c.idconvocatoria

IF @TipoConvocatoria= 2 and @SituacionRevista  is null and @organizacion is not null
begin
	select @SituacionRevista=min(S.situacionrevista) from tb_serviciosagentes s
	join  inserted i on s.agente=i.agente and s.ubicacionorig=i.organizacion
--	join tb_organizaciones o on i.organizacion=s.ubicacionorig and s.ubicacionorig=o.idorganizaciones
	where   I.idinscripcionconvocatoria=@IdInscripcionConvocatoria  --s.fechabaja is  null and
	update dbo.tb_InscripcionesConvocatorias set situacionRevista=@SituacionRevista where idinscripcionconvocatoria=@idinscripcionconvocatoria
    /*borra el registro duplicado en la tabla tb_servicioshistoricosaudit*/
    select @idInscripcionConvocatoriaAudit=max(idinscripcionconvocatoriaaudit) FROM  dbo.tb_inscripcionesconvocatoriasaudit
    delete dbo.tb_inscripcionesconvocatoriasaudit where idinscripcionconvocatoriaaudit=@idInscripcionConvocatoriaAudit 
end
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[chaquearPosiblesVacantes] ON [dbo].[tb_InscripcionesConvocatorias] 
FOR  update

AS
SET NOCOUNT ON
DECLARE @convocatoria INT

DECLARE @cargo INT
DECLARE @asignatura INT
DECLARE @localidad INT
DECLARE @TipoConvocatoria int
DECLARE @error varchar (200)
DECLARE @DESCRLOC AS VARCHAR (30) 
DECLARE @DESCRConv AS VARCHAR (30) 

SELECT @convocatoria = I.Convocatoria,@TipoConvocatoria=c.tipoconvocatoria, @cargo = I.CargoGenerico, @asignatura = I.AsignaturaGenerica, @localidad = I.Localidad 
FROM inserted I join tb_convocatorias c on i.convocatoria=c.idconvocatoria

SELECT @DESCRLOC=L.LOCALIDAD FROM TB_LOCALIDADES L WHERE IDLOCALIDAD=@LOCALIDAD 
SELECT @DESCRConv=C.DESCRIPCION FROM TB_CONVOCATORIAS C WHERE IDCONVOCATORIA=@convocatoria

IF @convocatoria in (1318,1298) and @TipoConvocatoria<> 2 and @TipoConvocatoria<> 11 and  NOT EXISTS(SELECT * FROM tb_PosiblesVacantes WHERE convocatoria=@convocatoria and CargoGenerico = @cargo AND AsignaturaGenerica = @asignatura AND Localidad = @localidad) BEGIN
                select @error=  'La combinación CARGO: '+ cast(@cargo as varchar(30))  +'  ASIGNATURA: '+cast(@asignatura as varchar(30)) + ' no existe en la Localidad: '+@DESCRLOC      + ' para la convocatoria    ' + @DESCRConv 
	RAISERROR(@error, 16, 1)
             ROLLBACK
END
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[chequearDuplicados] ON [dbo].[tb_InscripcionesConvocatorias] 
FOR INSERT
AS
DECLARE @cargo INT
DECLARE @asignatura INT
DECLARE @agente INT
DECLARE @convocatoria INT
DECLARE @localidad INT
DECLARE @id INT

SELECT @id = I.IdInscripcionConvocatoria, @cargo = I.CargoGenerico, @asignatura = I.AsignaturaGenerica, @agente = I.Agente, @convocatoria = I.Convocatoria, @localidad = I.Localidad FROM Inserted I

IF EXISTS(SELECT * FROM tb_InscripcionesConvocatorias WHERE Agente = @agente AND CargoGenerico = @cargo AND AsignaturaGenerica = @asignatura AND Convocatoria = @convocatoria AND Localidad = @localidad AND @id <> IdInscripcionConvocatoria) BEGIN
	print @cargo
	print @agente
	print @convocatoria
	print @localidad
	RAISERROR('Esta INSCRIPCION ya ha sido registrada.' , 16,1)
	ROLLBACK
END
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[delInscripciones] ON [dbo].[tb_InscripcionesConvocatorias] 
FOR DELETE 
AS
SET NOCOUNT ON
DECLARE @id INT

--SELECT @id = (SELECT IdInscripcionConvocatoria FROM DELETED)

--DELETE FROM tb_DetallePuntajes WHERE Inscripcion IN(SELECT IdInscripcionConvocatoria FROM DELETED)
DELETE FROM tb_CalificacionesDeInscripcion WHERE Inscripcion IN(SELECT IdInscripcionConvocatoria FROM DELETED)
--insert tb_usuariosjuntas (Agente,Control)  SELECT agente,'DEL' FROM DELETED
IF @@ERROR <> 0
	ROLLBACK
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[manipularBajaGestion] ON [dbo].[tb_InscripcionesConvocatorias] 
FOR DELETE
AS

DECLARE @agente INT
DECLARE @anio INT
DECLARE @convocatoria INT
DECLARE @id INT

SELECT @id = I.IdInscripcionConvocatoria, @agente=agente, @anio=year(Fecha9), @convocatoria = I.Convocatoria FROM deleted I

IF NOT EXISTS(SELECT * FROM tb_InscripcionesConvocatorias WHERE Agente = @agente AND Convocatoria = @convocatoria) BEGIN
	DELETE FROM tb_Antecedentes WHERE Agente = @agente AND Rubro = 12 AND valor = @anio 
END
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[manipularNuevaGestion] ON [dbo].[tb_InscripcionesConvocatorias] 
FOR INSERT
AS
SET NOCOUNT ON
set dateformat dmy
DECLARE @agente INT
DECLARE @anio INT
DECLARE @convocatoria INT
DECLARE @id INT
DECLARE  @GrupoIncumbencias INT

SELECT @id = I.IdInscripcionConvocatoria, @agente=agente, @anio=datepart(yyyy,isnull(Fecha9, getdate())), @convocatoria = I.Convocatoria,
 @GRUPOiNCUMBENCIAS = 99 

FROM inserted I

IF ((@convocatoria <> 1090)  and (NOT EXISTS(SELECT * FROM tb_InscripcionesConvocatorias WHERE Agente = @agente AND Convocatoria = @convocatoria AND IdInscripcionConvocatoria <> @id))) BEGIN
	INSERT INTO tb_Antecedentes (Descripcion, Rubro, Tipo, Fecha, Valor, Parametro, GrupoIncumbencias, Agente, FechaDeAlta9)
	VALUES ('Gestión ' + cast(@anio as varchar(4)), 12, Null, GetDate(), @anio, Null, @GrupoIncumbencias, @agente, GetDate())
END
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[tri_InscripcionesConvocatoriasAudit] 
on dbo.tb_InscripcionesConvocatorias for insert,update,delete as
DECLARE @OPERACION varchar(50)

IF EXISTS (SELECT * FROM INSERTED)
BEGIN
    IF EXISTS (SELECT * FROM DELETED)
    BEGIN
        --UPDATE
        SET @OPERACION='UPDATE'
    END
    ELSE
    BEGIN
        --INSERT
        SET @OPERACION='INSERT'
    END
    
    --handle insert or update data
 insert into tb_InscripcionesConvocatoriasAudit (idinscripcionconvocatoria,agente,convocatoria,fecha9,cargogenerico,asignaturagenerica,localidad,organizacion,
                                                 observaciones,estado,puntaje,fechacalculo,necesitarecalcular,titulovalorado,categoriadetitulo,promediotitulo,
                                                 tituloespecifico,tituloregistrado,tipodeespaciocurricular,nivel,ciclo,
                                                 modalidad,usuario9,situacionrevista,tituloconcurrente,categoriatituloadultos,
                                                 operacion,fechaoperacion)
     
                                   SELECT        idinscripcionconvocatoria,agente,convocatoria,fecha9,cargogenerico,asignaturagenerica,localidad,organizacion,
                                                 observaciones,estado,puntaje,fechacalculo,necesitarecalcular,titulovalorado,categoriadetitulo,promediotitulo,
                                                 tituloespecifico,tituloregistrado,tipodeespaciocurricular,nivel,ciclo,
                                                 modalidad,usuario9,situacionrevista,tituloconcurrente,categoriatituloadultos,@OPERACION,getdate() FROM inserted 

END
ELSE IF EXISTS(SELECT * FROM DELETED)
BEGIN
    --DELETE
    SET @OPERACION='DELETE'
    insert into  tb_InscripcionesConvocatoriasAudit(idinscripcionconvocatoria,agente,convocatoria,fecha9,cargogenerico,asignaturagenerica,localidad,organizacion,
                                                    observaciones,estado,puntaje,fechacalculo,necesitarecalcular,titulovalorado,categoriadetitulo,promediotitulo,
                                                    tituloespecifico,tituloregistrado,tipodeespaciocurricular,nivel,ciclo,
                                                    modalidad,usuario9,situacionrevista,tituloconcurrente,categoriatituloadultos,
                                                    operacion,fechaoperacion)
                                            SELECT  idinscripcionconvocatoria,agente,convocatoria,fecha9,cargogenerico,asignaturagenerica,localidad,organizacion,
                                                    observaciones,estado,puntaje,fechacalculo,necesitarecalcular,titulovalorado,categoriadetitulo,promediotitulo,
                                                    tituloespecifico,tituloregistrado,tipodeespaciocurricular,nivel,ciclo,
                                                    modalidad,usuario9,situacionrevista,tituloconcurrente,categoriatituloadultos,@OPERACION,getdate() FROM deleted 
    
    

END
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] ADD CONSTRAINT [PK_tb_InscripcionesConvocatorias] PRIMARY KEY CLUSTERED  ([idInscripcionConvocatoria]) WITH (FILLFACTOR=95) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IDXCONVAGENTE] ON [dbo].[tb_InscripcionesConvocatorias] ([Agente]) WITH (FILLFACTOR=95) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [idxconvocatoria] ON [dbo].[tb_InscripcionesConvocatorias] ([Convocatoria]) WITH (FILLFACTOR=95) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_Agentes] FOREIGN KEY ([Agente]) REFERENCES [dbo].[tb_Agentes] ([idAgente])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_areaJuntas] FOREIGN KEY ([AreaJuntas]) REFERENCES [dbo].[tb_areaJuntas] ([id])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_AsignaturasGenericas] FOREIGN KEY ([AsignaturaGenerica]) REFERENCES [dbo].[tb_AsignaturasGenericas] ([idAsignaturaGenerica])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_CargosGenericos] FOREIGN KEY ([CargoGenerico]) REFERENCES [dbo].[tb_CargosGenericos] ([idCargoGenerico])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_CategoriasDeTitulo] FOREIGN KEY ([CategoriaDeTitulo]) REFERENCES [dbo].[tb_CategoriasDeTitulo] ([idCategoria])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_Ciclos] FOREIGN KEY ([Ciclo]) REFERENCES [dbo].[tb_Ciclos] ([IdCiclo])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_Convocatorias] FOREIGN KEY ([Convocatoria]) REFERENCES [dbo].[tb_Convocatorias] ([idConvocatoria])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_EstadosDeInscripcion] FOREIGN KEY ([Estado]) REFERENCES [dbo].[tb_EstadosDeInscripcion] ([idEstadoInscripcion])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_Localidades] FOREIGN KEY ([Localidad]) REFERENCES [dbo].[tb_Localidades] ([idLocalidad])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_ModalidadesEnsenanza] FOREIGN KEY ([Modalidad]) REFERENCES [dbo].[tb_ModalidadesEnsenanza] ([idModalidad])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_NivelesEnsenanza] FOREIGN KEY ([Nivel]) REFERENCES [dbo].[tb_NivelesEnsenanza] ([idNivelEnsenanza])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_Organizaciones] FOREIGN KEY ([Organizacion]) REFERENCES [dbo].[tb_Organizaciones] ([idOrganizaciones])
GO
ALTER TABLE [dbo].[tb_InscripcionesConvocatorias] WITH NOCHECK ADD CONSTRAINT [FK_tb_InscripcionesConvocatorias_tb_SituacionRevista] FOREIGN KEY ([SituacionRevista]) REFERENCES [dbo].[tb_SituacionRevista] ([idSituacionRevista])
GO
